package ThreadAndLambda.等待唤醒机制;

/*
    消费者类：是一个线程，继承Thread
    设置线程任务run:购买商品
    对商品状态进行判断
        fasle：调用wait进入等待状态
        true：购买商品
        修改商品属性为false
        唤醒商店线程，进行生产
*/
public class Customer extends Thread {
    // 1、需要在成员位置创建一个商品变量
    private Item item;

    // 2、使用带参数的构造方法，为这个商品变量赋值
    public Customer(Item item) {
        this.item = item;
    }

    // 设置线程任务run:购买商品
    @Override
    public void run() {
        //使用死循环，一直购买商品
        while (true) {
            synchronized (item) {
                if (item.flag == true) {
                    System.out.println("正在买商品" + item.name + "价格为" + item.price);
                    item.flag = false;
                    item.notify();
                    System.out.println("已经买到商品" + item.name + "价格为" + item.price);
                    System.out.println("——————————————————————");
                } else {
                    try {
                        item.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }

}
